<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>原型链问题的解决</title>
</head>
<body>
<script>
  /*
  * 共享数组的问题是因为就算将数组在构造函数中定义也会成为原型属性
  * 那么我们可以在每个对象创建的时候都在子类身上定义一遍这样的话每个对象的内部都有父类的属性访问属性的时候就不会去父类身上找了
  * */


  /*
  * 组合继承
  * */
  function Person(name) {
      this.name = name
  }

  /*
  * 构造函数如果被其他对象捆绑调用的话就能够动态的为这个对象添加属性
  * */
  function Student(name) {
      /*继承属性*/
      Person.call(this,name)
      /*
      *
      * 为什么在class的constructor中super只能放在首行呢？
      * 因为如果放在其他行的话如果父类中有和子类中相同名字的属性会覆盖子类
      * 这样写的话就算覆盖也是子类覆盖父类
      * */
      this.age = 100
  }

  /*
  * 继承方法
  * */
  Student.prototype = new Person()

  let student = new Student('A')
  console.log(student.name)
</script>
</body>
</html>